/*
  https://flutter.cn/docs/get-started/flutter-for/android-devs
  如何创建自定义 Widget？

  在 Android 中，一般通过继承 View 类，或者使用已有的视图类，再重载或实现以达到特定效果的方法。

在 Flutter 中，通过 组合 更小的 Widget 来创建自定义 Widget（而不是继承它们）。这和 Android 中实现一个自定义的 ViewGroup 有些类似，
所有的构建 UI 的模块代码都已存在，不过由你提供不同的行为—例如，自定义布局 (layout) 逻辑。

举例来说，你该如何创建一个在构造器接收标签参数的 CustomButton？你要组合 ElevatedButton 和一个标签来创建自定义按钮，而不是继承 ElevatedButton：
 */

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '',
      home: Scaffold(
        appBar: AppBar(title: const Text('建自定义 Widget')),
        body: Center(
          child: CustomButton('hello'),
        ),
      ),
    );
  }
}

class CustomButton extends StatelessWidget {
  final String label;

  const CustomButton(this.label, {super.key});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(onPressed: () {}, child: Text(label));
  }
}
